Casper CBC: CasperLabs technical specification
Validators
Validators may increase or decrease their stake at any time by calling the POS contract with the appropriate argument. Stakes are increased with a "bond" argument (including increasing their stake from zero) and decreased with an "unbond" argument (including decreasing it to zero). Bonding and unbonding are deploys just like any other deploy, i.e. they are included in blocks which are approved by consensus among the then-current set of validators.
The node that issued the bonding deploy is able to act as a validator for any block that is a descendant of the block that includes this bonding deploy. Thus the set of validators is known for any block in the DAG.
justification
message Justification {
bytes validator_public_key = 1;
bytes latest_block_hash = 2;
}
2018: First implementation of proof-of-stake blockchain built on Casper-GHOST-Blockdag combination attempted (Rchain system)
block proposal
We assume that the P2P protocol used for validator-to-validator communication is based on best-effort-broadcasting. So, any time a validator has a new message to announce, it is announcing the message to all validators in the network. We assume that, once broadcasted, the message M will be eventually delivered to any other validator in the network that is alive, but:
the delay between sending and receiving is arbitrary in duration.
there is no guarantee on message order, so delivery order may differ from broadcast order
the same message may be delivered more than once
in principle messages can also get lost, but we expect this will be handled by lower layers of communication, so in the consensus layer message loss presents as delays